package com.base.logistics.jdl.bean.print;

import com.base.logistics.jdl.util.json.JdlGsonBuilder;
import com.base.logistics.jdl.bean.RequestParams;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * <pre>
 * 获取打印模板列表请求对象
 * </pre>
 * @since 2021-02-19
 */
public class GetTemplateListRequest extends RequestParams  implements Serializable {

    /**
     * 服务域
     */
    private static final String LOP_DN= "jdcloudprint";

    /**
     * code字段
     */
    private static final String CODE_FIELD = "code";

    /**
     * 成功状态码
     */
    private static final Integer SUCCESS_CODE = 1;

    /**
     * API url
     */
    private static final String METHOD = "/PullDataService/getTemplateList";

    /**
     * 获取打印模板列表参数对象
     * <pre>
     * 是否必填：是
     * </pre>
     */
    private GetTemplateListReqDTO getTemplateListReqDTO;

    GetTemplateListRequest(GetTemplateListReqDTO getTemplateListReqDTO) {
        this.getTemplateListReqDTO = getTemplateListReqDTO;
    }

    public static GetTemplateListRequestParamsBuilder builder() {
        return new GetTemplateListRequestParamsBuilder();
    }

    /**
     * 获取返回状态码字段
     * @return 返回状态码字段
     */
    @Override
    public String getCodeField() {
        return CODE_FIELD;
    }

    /**
     * 获取成功返回状态码
     * @return 成功返回状态码
     */
    @Override
    public Integer getSuccessCode() {
        return SUCCESS_CODE;
    }

    /**
     * 获取请求json数据
     * @return 请求json数据
     */
    @Override
    public String getJsonParams() {
        List<GetTemplateListReqDTO> list = new ArrayList<>();
        list.add(this.getTemplateListReqDTO);
        return JdlGsonBuilder.create().toJson(list);
    }

    /**
     * 获取服务域
     * @return 服务域
     */
    @Override
    public String getLopDn() {
        return LOP_DN;
    }

    /**
     * 获取API url
     * @return API url
     */
    @Override
    public String getMethod() {
        return METHOD;
    }

    public GetTemplateListReqDTO getGetTemplateListReqDTO() {
        return this.getTemplateListReqDTO;
    }

    public void setGetTemplateListReqDTO(GetTemplateListReqDTO getTemplateListReqDTO) {
        this.getTemplateListReqDTO = getTemplateListReqDTO;
    }

    public String toString() {
        return "GetTemplateListRequest(getTemplateListReqDTO=" + this.getGetTemplateListReqDTO() + ")";
    }

    public boolean equals(final Object o) {
        if (o == this) return true;
        if (!(o instanceof GetTemplateListRequest)) return false;
        final GetTemplateListRequest other = (GetTemplateListRequest) o;
        if (!other.canEqual((Object) this)) return false;
        if (!super.equals(o)) return false;
        final Object this$getTemplateListReqDTO = this.getGetTemplateListReqDTO();
        final Object other$getTemplateListReqDTO = other.getGetTemplateListReqDTO();
        if (this$getTemplateListReqDTO == null ? other$getTemplateListReqDTO != null : !this$getTemplateListReqDTO.equals(other$getTemplateListReqDTO))
            return false;
        return true;
    }

    protected boolean canEqual(final Object other) {
        return other instanceof GetTemplateListRequest;
    }

    public int hashCode() {
        final int PRIME = 59;
        int result = super.hashCode();
        final Object $getTemplateListReqDTO = this.getGetTemplateListReqDTO();
        result = result * PRIME + ($getTemplateListReqDTO == null ? 43 : $getTemplateListReqDTO.hashCode());
        return result;
    }

    public static class GetTemplateListRequestParamsBuilder {
        private GetTemplateListReqDTO getTemplateListReqDTO;

        GetTemplateListRequestParamsBuilder() {
        }

        public GetTemplateListRequestParamsBuilder getTemplateListReqDTO(GetTemplateListReqDTO getTemplateListReqDTO) {
            this.getTemplateListReqDTO = getTemplateListReqDTO;
            return this;
        }

        public GetTemplateListRequest build() {
            return new GetTemplateListRequest(getTemplateListReqDTO);
        }

        public String toString() {
            return "GetTemplateListRequest.GetTemplateListRequestParamsBuilder(getTemplateListReqDTO=" + this.getTemplateListReqDTO + ")";
        }
    }
}
